#include <iostream>
#include <deque>

using namespace std;

int main()
{
	/*
	 * deque特点：
	 * 1.deque(double-ended queue 双端队列);
	 * 2.具有分段数组、索引数组, 分段数组是存储数据的，索引数组是存储每段数组的首地址;
	 * 3.向两端插入元素效率较高！
	 * 4.若向两端插入元素，如果两端的分段数组未满，既可插入;如果两端的分段数组已满，则创建新的分段函数，并把分段数组的首地址存储到deque容器中即可，中间插入元素效率较低！
	 *
	 * */

	deque<int> deq;

	deq.insert(deq.begin(),21);
	deq.insert(deq.begin(),22);
	deq.insert(deq.begin(),23);
	deq.insert(deq.begin(),24);
	deq.insert(deq.begin(),25);

	for(int i = 0; i < deq.size(); i++)
	{
		cout << deq.at(i) << endl;
	}

	cout << "---------------------------" << endl;
	// 头部添加元素, 其他元素向后移动
	deq.push_front(100);	
	for(int i = 0; i < deq.size(); i++)
	{
		cout << deq.at(i) << endl;
	}
	
	cout << "弹出最后一个元素" << endl;
	deq.pop_back();
	for(int i = 0; i < deq.size(); i++)
	{
		cout << deq.at(i) << endl;
	}

}

